package com.tools.web.interceptor.limit;

import com.tools.common.object.Note;
import com.tools.common.thread.Timeunit;

import java.lang.annotation.*;

/**
 * IP-URI 限流注解，用于控制器类或 Rest 接口上。
 * 限制同一个 IP 对同一个接口的请求次数
 * */
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Note("IP-URI 限流注解，用于控制器类或 Rest 接口上。限制同一个 IP 对同一个接口的请求次数")
public @interface RequestLimit {

    @Note("默认允许请求 1 次")
    int allow() default 1;

    @Note("上一次到下一次请求之间的时间间隔。默认是 1 秒允许请求 1 次")
    long time() default 1;

    @Note("time 的时间单位，默认是秒")
    Timeunit timeunit() default Timeunit.SECOND;

    @Note("限流后的响应错误状态码，负数不启用")
    int code() default -1;

    @Note("限流后的响应错误信息，空字符串不启用")
    String msg() default "";
}
